package com.ecp.commons.serialization;

import java.util.Date;
import java.util.Set;

import com.ecp.commons.annotation.VariantType;

public interface SerializableObject {
	public static final String	INVALID_ID	= "-1";

	void defineVariantSet();

	void resetValues();

	boolean needCached();

	String serialize() throws Exception;

	void deserialize(String str) throws Exception;

	Set<String> keySet();

	void setEntity(String entity);

	String getEntity();

	//<T> void set(String key, T value);
	void set(String key, boolean value);

	void set(String key, Date value);

	void set(String key, double value);

	void set(String key, float value);

	void set(String key, int value);

	void set(String key, long value);

	void set(String key, String value);

	boolean getBoolean(String key);

	Date getDate(String key);

	double getDouble(String key);

	float getFloat(String key);

	int getInt(String key);

	long getLong(String key);

	String getString(String key);

	String getAliasName(String key);

	boolean isPk(String key);

	boolean isPersistent(String key);

	boolean isSerialize(String key);

	boolean isNullable(String key);

	int getLength(String key);

	VariantType getVariantType(String key);

	String getPk();

	String getPkValue();

	void setPkValue(String value);

	boolean isValid();
}
